class CaMenuController < ApplicationController
  
  # já que os menus controlam o acesso aos seus itens, o ideal é que o acesso a menus específicos seja liberado. 
  #before_filter :login_required, :except => [:principal]

  def index
    @ca_menus = CaMenu.find(:all)
    require 'pp'
    puts('================================================')
    pp @ca_menus
  end
  
  def principal
    ca_menu = CaMenu.find(1)
    @ca_menu_itens_filtrados = []
    @ca_menu_itens_filtrados = current_user.filtrar_itens_menu(ca_menu)
    render(:layout=>false)
  end

  def editar
    @ca_menu = CaMenu.find(params[:id])
  end

  def criar_item
    ca_menu = CaMenu.find(params[:ca_menu][:id])
    ca_menu_item = CaMenuItem.new
    ca_menu_item.nome = params[:ca_menu_item][:nome]
    ca_menu_item.ca_menu_id = ca_menu.id
    ca_menu_item.save
    parent_id = params[:ca_menu_item][:parent_id].to_i
    if(parent_id > 0)
      pai = CaMenuItem.find(parent_id)
      ca_menu_item.move_to_child_of pai
    end
    render :update do |page|
	    page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu}
    end
  end

  def salvar
    @ca_menu = CaMenu.find(params[:id])
    if @ca_menu.update_attributes(params[:ca_menu])
      mensagem = "Conteudo foi salvo tranquilamente"
    else
      mensagem = "N�o salvou por isso isso e aquilo..."
    end
    render :update do |page|
     page.replace_html "mensagem_flash", mensagem
    end
  end

  ## - metodos para editar os itens....

  def editar_item
    ca_menu_item = CaMenuItem.find(params[:id])
    render :update do |page|
	    page.replace_html "item_menu",:partial=>'editar_item',:locals=>{'ca_menu_item'=>ca_menu_item}
    end
  end

  def salvar_item
    ca_menu_item = CaMenuItem.find(params[:id])
    if ca_menu_item.update_attributes(params[:ca_menu_item])
      mensagem = "O item do menu foi salvo tranquilamente"
    else
      mensagem = "Não salvou por isso isso e aquilo..."
    end
    ca_menu = CaMenu.find(ca_menu_item.ca_menu_id)
    render :update do |page|
     page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu}
     page.replace_html "mensagem_flash", mensagem
    end
  end

  def remover_item
    ca_menu_item = CaMenuItem.find(params[:id])
    ca_menu_item.destroy
    ca_menu = CaMenu.find(ca_menu_item.ca_menu_id)
    render :update do |page|
     page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu}
     page.replace_html "mensagem_flash", "Item removido com sucesso. (verificar erros)"
    end
  end

  def trocar_pai
    pai = CaMenuItem.find(params[:parent_id])
    filho = CaMenuItem.find(params[:id].split("_").last)
    filho.move_to_child_of pai
    ca_menu = CaMenu.find(pai.ca_menu_id)
    render :update do |page|
	    page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu}
      page.replace_html "mensagem_flash","movido com sucesso (arrumar mensagens de erro)"
    end
  end

  def mover_cima
    ca_menu_item = CaMenuItem.find(params[:id])
    ca_menu_item.subir
    render :update do |page|
	    page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu_item.ca_menu}
      page.replace_html "mensagem_flash","movido com sucesso..."
    end
  end

  def mover_baixo
    ca_menu_item = CaMenuItem.find(params[:id])
    ca_menu_item.descer
    render :update do |page|
	    page.replace_html "itens_menu",:partial=>'itens_menu',:locals=>{'ca_menu'=>ca_menu_item.ca_menu}
      page.replace_html "mensagem_flash","movido com sucesso..."
    end
  end

end